package com.kjlink.internal.workreport.plan.model;


import cn.xuqiudong.common.base.model.BaseEntity;
import cn.xuqiudong.common.util.collections.EntityIdentification;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.kjlink.internal.workreport.base.annotation.NoneColumn;
import com.kjlink.internal.workreport.base.enums.PlanStatusEnum;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;


/**
 * 周工作计划详情 实体类
 *
 * @author Vic.xu
 */
public class WorkPlanDetail extends BaseEntity implements EntityIdentification {

    private static final long serialVersionUID = 1L;

    /**
     * 用户id
     */
    private Integer userId;

    @NoneColumn
    private String userName;

    /**
     * 计划id
     */
    private Integer planId;

    /**
     * 序号
     */
    private Integer sequenceNumber;

    /**
     * 计划说明
     */
    private String description;

    /**
     * 预计工时:人天
     */
    private BigDecimal estimatedEffort;

    /**
     * 实际工时:人天
     */
    private BigDecimal actualEffort;

    /**
     * 计划完成日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date plannedCompletionDate;

    /**
     * 实际完成日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date actualCompletionDate;

    /**
     * 是否需要支持
     */
    private Boolean needsSupport;

    /**
     * 进度
     */
    private Integer progress;

    /**
     * 状态
     */
    private PlanStatusEnum status;


    /***************** set|get  start **************************************/
    /**
     * set：用户id
     */
    public WorkPlanDetail setUserId(Integer userId) {
        this.userId = userId;
        return this;
    }

    /**
     * get：用户id
     */
    public Integer getUserId() {
        return userId;
    }

    /**
     * set：计划id
     */
    public WorkPlanDetail setPlanId(Integer planId) {
        this.planId = planId;
        return this;
    }

    /**
     * get：计划id
     */
    public Integer getPlanId() {
        return planId;
    }

    /**
     * set：序号
     */
    public WorkPlanDetail setSequenceNumber(Integer sequenceNumber) {
        this.sequenceNumber = sequenceNumber;
        return this;
    }

    /**
     * get：序号
     */
    public Integer getSequenceNumber() {
        return sequenceNumber;
    }

    /**
     * set：计划说明
     */
    public WorkPlanDetail setDescription(String description) {
        this.description = description;
        return this;
    }

    /**
     * get：计划说明
     */
    public String getDescription() {
        return description;
    }

    /**
     * set：预计工时:人天
     */
    public WorkPlanDetail setEstimatedEffort(BigDecimal estimatedEffort) {
        this.estimatedEffort = estimatedEffort;
        return this;
    }

    /**
     * get：预计工时:人天
     */
    public BigDecimal getEstimatedEffort() {
        return estimatedEffort;
    }

    /**
     * set：实际工时:人天
     */
    public WorkPlanDetail setActualEffort(BigDecimal actualEffort) {
        this.actualEffort = actualEffort;
        return this;
    }

    /**
     * get：实际工时:人天
     */
    public BigDecimal getActualEffort() {
        return actualEffort;
    }

    /**
     * set：计划完成日期
     */
    public WorkPlanDetail setPlannedCompletionDate(Date plannedCompletionDate) {
        this.plannedCompletionDate = plannedCompletionDate;
        return this;
    }

    /**
     * get：计划完成日期
     */
    public Date getPlannedCompletionDate() {
        return plannedCompletionDate;
    }

    /**
     * set：实际完成日期
     */
    public WorkPlanDetail setActualCompletionDate(Date actualCompletionDate) {
        this.actualCompletionDate = actualCompletionDate;
        return this;
    }

    /**
     * get：实际完成日期
     */
    public Date getActualCompletionDate() {
        return actualCompletionDate;
    }

    /**
     * set：是否需要支持
     */
    public WorkPlanDetail setNeedsSupport(Boolean needsSupport) {
        this.needsSupport = needsSupport;
        return this;
    }

    /**
     * get：是否需要支持
     */
    public Boolean getNeedsSupport() {
        return needsSupport;
    }

    /**
     * set：进度
     */
    public WorkPlanDetail setProgress(Integer progress) {
        this.progress = progress;
        return this;
    }

    /**
     * get：进度
     */
    public Integer getProgress() {
        return progress;
    }

    /**
     * set：状态
     */
    public WorkPlanDetail setStatus(PlanStatusEnum status) {
        this.status = status;
        return this;
    }

    /**
     * get：状态
     */
    public PlanStatusEnum getStatus() {
        return status;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }


    /***************** set|get  end **************************************/
}
